/**
 * @description 深复制
 * @param obj 目标值
 * @returns {Object}
 */
const deepClone = (obj: any, cache = new WeakMap()) => {
	// 基本类型直接返回
	if (typeof obj !== 'object' || obj === null) {
		return obj;
	}

	// 检查缓存
	if (cache.has(obj)) {
		return cache.get(obj);
	}

	// 创建一个新的对象或数组
	const clone: any = Array.isArray(obj) ? [] : {};

	// 缓存当前对象
	cache.set(obj, clone);

	// 遍历对象/数组的每个属性
	for (const key in obj) {
		if (Object.prototype.hasOwnProperty.call(obj, key)) {
			clone[key] = deepClone(obj[key], cache);
		}
	}

	return clone;
}
export default deepClone;


